﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Smartee.RichText
{
    public struct Measurement
    {
        public enum Unit { Twips, Point, Centimeters, Millimeters, Inches }

        public const int TwipsInInch = 1440;
        public const int TwipsInCentimeter = 567;
        public const int TwipsInPoint = 20;

        public static int ToTwips(double value, Unit unit)
        {
            switch (unit)
            {
                case Unit.Twips:
                    return (int)value;
                case Unit.Point:
                    return (int)(value * TwipsInPoint);
                case Unit.Millimeters:
                    return (int)(value * TwipsInCentimeter / 10);
                case Unit.Centimeters:
                    return (int)(value * TwipsInCentimeter);
                case Unit.Inches:
                    return (int)(value * TwipsInInch);
                default:
                    throw new Exception();
            }
        }

        private int _twips;

        public int Twips { get { return _twips; } set { _twips = value; } }
        public int Points { set { _twips = ToTwips(value, Unit.Point); } }
        public double Millimeters { set { _twips = ToTwips(value, Unit.Millimeters); } }
        public double Centimeters { set { _twips = ToTwips(value, Unit.Centimeters); } }
        public double Inches { set { _twips = ToTwips(value, Unit.Inches); } }
    }
}
